Due to the large number of components in state of the art electronic circuits, most of their design and production is computer implemented. An important operation performed during design of electronic circuits is timing analysis that validates timing performance of an electronic design. One way to perform timing analysis is to use dynamic simulation which determines the full behavior of a circuit for a given set of input values. Timing analysis using dynamic simulation is highly computation intensive. A more efficient method for perform timing analysis validates timing performance of a circuit design by checking all possible paths for timing violations. This method is called static timing analysis (STA) and is much faster than dynamic simulation since it does not simulate the logical operation of the electronic circuit. However, performing static timing analysis for large electronic circuits can take significant time.
Furthermore, timing analysis needs to be repeated multiple times for the same electronic design for various combinations of modes and corners. Semiconductor device parameters can vary with conditions such as fabrication process, operating temperature, and power supply voltage. A circuit fabricated using these processes may run slower or faster than specified due to variations in operating conditions or may even fail to function. Therefore timing analysis is performed for various operating conditions to make sure that the circuit performs as specified under these conditions. Such operating conditions for a circuit are modeled using corners that comprise a set of libraries characterized for process, voltage, and temperature variations.
The timing analysis of a circuit is also repeated for different operating modes, for example, normal operating mode, test mode, scan mode, reset mode and so on. For example, a circuit used in a computer operates in a stand-by mode when the computer is in a stand-by mode. Similarly, during testing phase, a circuit may be operated in a test mode. A mode is modeled using a unique set of clocks, input voltages, and timing constraints in similar operating conditions.
For performing timing analysis during implementation and sign-off of a circuit, designers have to verify a large number of modes and corners. Each circuit design may have tens of modes and tens of corners. Since each mode has to be verified for each corner conditions, the total number of scenarios in which the design needs to be verified is the product of the number of modes and number of corners. This results in the timing analysis being performed a large number of times resulting in exorbitant costs.
One way to handle the large number of scenarios resulting from multiple modes and corners is to merge the modes into a smaller set, for example, a single mode. Since timing verification must be performed for the combination of modes and corners, reduction in the number of modes reduces the total combinations of modes and corners by a much larger number. For example, if there are 10 modes and 10 corners, the total number of combination of modes and corners is 10×10=100. However if the 10 modes were combined to a single mode, the total number of combinations is reduced to 1×10=10 which is a 90% reduction in the number of combinations that need to be verified.
Conventionally modes are merged manually by designers. Furthermore, the manually merged modes are manually verified against the original set of modes or not verified. Due to the complexity of constraints associated with circuit designs, the generation of merged modes is difficult to handle manually. Since the number of timing constraints for a given netlist can be large, manual merging of modes can be error prone and have prohibitive costs. For example, a circuit could have millions of lines of constraints and manually verifying correctness of merged constraints may not be practically feasible. Due to lack of confidence in the correctness of the merged modes, manually merged modes may be used during the implementation phase of the design but final sign-off of the design is performed using individual modes.